Apache Flink-এ Windows হলো এমন একটি মেকানিজম যা স্ট্রিম ডেটাকে নির্দিষ্ট সময় বা ইভেন্টের উপর ভিত্তি করে ভাগ করে ডেটা প্রসেস করতে সাহায্য করে। স্ট্রিম ডেটা সাধারণত অবিরাম এবং অন্তহীন হয়, তাই নির্দিষ্ট সময় বা ইভেন্টের পরিপ্রেক্ষিতে ডেটা গ্রুপ করে প্রসেস করা গুরুত্বপূর্ণ। Flink-এ উইন্ডো মেকানিজম স্ট্রিম ডেটা প্রসেসিং-এর অন্যতম গুরুত্বপূর্ণ উপাদান, এবং Flink বিভিন্ন ধরনের উইন্ডো সমর্থন করে।
Flink-এ উইন্ডোকে সাধারণত চারটি প্রধান শ্রেণিতে ভাগ করা হয়:
প্রতিটি উইন্ডোর একটি নির্দিষ্ট আচরণ এবং প্রসেসিং মেকানিজম রয়েছে। নিচে তাদের ব্যাখ্যা করা হলো:
Tumbling Windows হলো একটি ফিক্সড-সাইজ উইন্ডো যা কোনো ওভারল্যাপ ছাড়াই স্ট্রিম ডেটাকে নির্দিষ্ট সময় বা ইভেন্ট কাউন্টের ভিত্তিতে ভাগ করে। প্রতিটি উইন্ডো তার নির্দিষ্ট দৈর্ঘ্যের পর নতুন উইন্ডোতে শুরু হয়।
dataStream
.keyBy(value -> value.getKey())
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.sum("value");
value
ফিল্ডের সমষ্টি (sum) গণনা করা হয়েছে।Sliding Windows হলো একটি ফিক্সড-সাইজ উইন্ডো যা একটি নির্দিষ্ট ইন্টারভালে স্লাইড করে। Sliding Windows সাধারণত ওভারল্যাপিং উইন্ডো হয়, যেখানে প্রতিটি উইন্ডো নির্দিষ্ট সময় পরপর শুরু হয় এবং আগের উইন্ডোর কিছু অংশও ধরে রাখতে পারে।
dataStream
.keyBy(value -> value.getKey())
.window(SlidingEventTimeWindows.of(Time.seconds(10), Time.seconds(5)))
.sum("value");
value
ফিল্ডের সমষ্টি (sum) গণনা করা হচ্ছে।Session Windows হলো এমন উইন্ডো যা একটানা ইভেন্টের উপর নির্ভর করে এবং কোন ফিক্সড টাইম ইন্টারভাল অনুসরণ করে না। এটি inactivity gap বা session gap এর উপর ভিত্তি করে ডেটাকে গ্রুপ করে। যখন দুটি ইভেন্টের মধ্যে একটি নির্দিষ্ট সময়ের বিরতি থাকে, তখন একটি নতুন উইন্ডো শুরু হয়।
dataStream
.keyBy(value -> value.getKey())
.window(EventTimeSessionWindows.withGap(Time.seconds(30)))
.sum("value");
Global Windows হলো একটি বিশেষ উইন্ডো যা Flink-এর মাধ্যমে নির্দিষ্টভাবে ট্রিগার না হওয়া পর্যন্ত স্ট্রিমের সমস্ত ডেটাকে ধরে রাখে। Global Windows সাধারণত কাস্টম ট্রিগার এবং প্রসেস ফাংশনের সাথে ব্যবহৃত হয়, কারণ এটি ডিফল্টভাবে কোন সময় বা ইভেন্ট কাউন্টের উপর নির্ভর করে না।
dataStream
.keyBy(value -> value.getKey())
.window(GlobalWindows.create())
.trigger(new CustomTrigger())
.sum("value");
GlobalWindows.create()
ব্যবহার করে একটি গ্লোবাল উইন্ডো তৈরি করা হয়েছে এবং একটি কাস্টম ট্রিগার সেট করা হয়েছে, যা নির্দিষ্ট শর্ত অনুযায়ী উইন্ডো প্রসেস করবে।Apache Flink-এ Windows বিভিন্ন ধরণের স্ট্রিম ডেটা প্রসেসিং এবং অ্যাগ্রিগেশন করতে সাহায্য করে। এটি বিভিন্ন ধরনের প্রসেসিং স্ট্র্যাটেজি সমর্থন করে, যেমন Tumbling Windows নির্দিষ্ট ইন্টারভালের জন্য ডেটা গ্রুপ করে, Sliding Windows ওভারল্যাপিং করে প্রসেসিং করে, Session Windows সেশন ভিত্তিক ডেটা গ্রুপ করে, এবং Global Windows কাস্টম শর্তে ডেটা প্রসেস করে। এই উইন্ডোগুলি Flink-এ স্ট্রিম ডেটা প্রসেসিংকে আরও সহজ এবং কার্যকর করে তোলে।
আরও দেখুন...